{}
包住 JavaScript 表達式(expression)來回傳元素(例如 map())map()
可以把陣列轉換成一組 JSX 元素List.js
function List() {
const items = ["New York", "London", "Tokyo", "Seoul", "Taipei"];
return (
<>
<h1>List</h1>
<ul className="list-group">
{items.map(item => (
<li
className="list-group-item"
key={item}
>
{item}
</li>
))}
</ul>
</>
);
}
export default List;
App.js
import List from "./List";
function App() {
return (
<div className="App">
<List />
</div>
);
}
export default App;
瀏覽器執行畫面:
condition ? A : B{items.length === 0 ? <p>No item found</p> : null}
如果 items.length
為 true → 表達式結果:渲染A (No item found)
如果 items.length
為 false → 表達式結果:B (null),null:畫面上不會渲染任何東西
condition && A{items.length === 0 && <p>No item found</p>}
如果 items.length === 0
為 true → 表達式結果:渲染 A(No item found)
如果 items.length === 0
為 false → 表達式結果:忽略 false,畫面上不會渲染任何東西
例如:
三元運算子 ( ? : ):處理 true 與 false 兩種情況
邏輯 AND ( && ):只處理 true 的情況,false就不顯示
在React中,條件樣式渲染可以讓 UI 根據 state 或 props 動態改變外觀
除了內容可以渲染以外,className 及 style 也能根據條件來進行渲染,讓畫面更直覺的反映狀態
Button.js
import { useState } from "react";
const Button = () => {
const [isActive, setIsActive] = useState(false);
return (
<div>
<button
className={isActive ? "enabled" : "disabled"}
onClick={() => setIsActive(!isActive)}
>
{isActive ? "on" : "off"}
</button>
</div>
);
};
export default Button;
App.css
.enabled {
background-color: green;
color: white;
}
.disabled {
background-color: red;
color: white;
}
App.js
import "./App.css";
import Button from "./Button";
function App() {
return (
<div className="App">
<Button />
</div>
);
}
export default App;
className={isActive ? "enabled " : "disabled "}
isActive
為 true → 顯示綠色背景,且文字顯示「on」。isActive
為 false → 顯示紅色背景,且文字顯示「off」。瀏覽器執行畫面: